package com.zlq.cn.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 *
 * </p>
 *
 * @author zhoucl
 * @since 2020-06-08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("z_user")
public class User extends Model<User> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 姓名
     */
    private String name;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 项目
     */
    private String project;

    /**
     * 密码
     */
    private String password;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 性别
     */
    private String gender;

    /**
     * token
     */
    private String token;

    /**
     * 手机型号
     */
    private String phoneModel;

    /**
     * 邀请码
     */
    private String invitationCode;

    /**
     * 好友数量
     */
    private Integer friendNum;

    /**
     * 网络类型
     */
    private String networkType;

    /**
     * 是否在线
     */
    private Integer isOnline;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;

    /**
     * 地址
     */
    private String address;

    /**
     * 是否禁用
     */
    private Integer isDisable;
    /**
     * 位置清除次数
     */
    private Integer locationResetCount;

    /**
     * vip等级
     */
    private Integer vipLevel;

    /**
     * vip开始时间
     */
    private LocalDateTime vipStartTime;

    /**
     * vip结束时间
     */
    private LocalDateTime vipEndTime;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 生日
     */
    private LocalDate birthday;

    /**
     * 电量
     */
    private Integer battery;

    @ApiModelProperty("苹果token")
    private String iosToken;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    // --------------------非数据库字段-----------------------------
    //vip剩余天数
    @TableField(exist = false)
    private long surplusDay;

    //会员到期时间说明
    @TableField(exist = false)
    private String membershipExpirationDate;

    //非VIP是否允许添加好友
    @TableField(exist = false)
    private int isNotVipAddFriend;

    //服务器当前时间
    @TableField(exist = false)
    private LocalDateTime currentDate;

    //是否新创建
    @TableField(exist = false)
    @JsonIgnore
    private boolean isNewCreate;

    //是否需要更新用户资料
    @TableField(exist = false)
    @JsonIgnore
    private boolean isNeedUpdate;

    //位置改变
    @TableField(exist = false)
    @JsonIgnore
    private boolean locationChange;

    //电量预警推送完成
    @TableField(exist = false)
    private boolean batteryWarningPush;

    //配置链接
    @TableField(exist = false)
    private String configUrl;
}
